package com.lcy.algorithm.huawei;

import java.util.Scanner;

/**
 * 题目描述∶RSA加密算法在网络安全世界中无处不在，它利用了极大整数因数分解的困难度，数据越大，安全系数越高，给定一个32位正整数，请对其进行因数分解，找出
 * 是哪两个素数的乘积。
 * 输入描述:一个正整数num
 * 0 < num <= 2147483647
 * 输出描述∶如果成功找到，以单个空格分割，从小到大输出两个素数，分解失败，请输出-1 -1
 * 补充说明︰
 * 示例1
 * 输入∶15
 * 输出∶3 5
 * 说明∶因数分解后，找到两个素数3和5，使得3*5=15，按从小到大排列后，输出3 5
 * 示例2
 * 输入∶27
 * 输出:-1 -1
 * 说明︰通过因数分解，找不到任何素数，使得他们的乘积为27，输出-1 -1
 */
public class 素数之和 {
    // 判断一个数是否为素数,从2开始除到该数的平方根,如果都无法整除则是素数
    public static boolean isPrime(int num) {
        if (num <= 1) {
            return false;
        }
        for (int i = 2; i <= Math.sqrt(num); i++) {
            if (num % i == 0) {
                return false;
            }
        }
        return true;
    }

    // 因数分解并找出两个素数的乘积
    public static void factorization(int num) {
        boolean found = false;
        for (int i = 2; i <= num / 2; i++) {
            if (num % i == 0 && isPrime(i) && isPrime(num / i)) {
                System.out.println(i + " " + (num / i));
                found = true;
                break;
            }
        }
        if (!found) {
            System.out.println("-1 -1");
        }
    }

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int num = scanner.nextInt();
        factorization(num);
    }
}
